#include "EpWidgetWithQuick.h"
#include <QQuickView>
#include <QVBoxLayout>
#include <QQuickWidget>

EpWidgetWithQuick::EpWidgetWithQuick(QWidget *parent) : QWidget(parent)
{
    // 方式一
       // QQuickView *pView = new QQuickView();
       // QWidget *pWidget = QWidget::createWindowContainer(pView, this);
       // pView->setResizeMode(QQuickView::SizeRootObjectToView);
       // pView->setSource(QUrl("qrc:/main.qml"));

       // 方式二
       QQuickWidget *pWidget = new QQuickWidget();
       pWidget->setResizeMode(QQuickWidget::SizeRootObjectToView);
       pWidget->setSource(QUrl("qrc:/EpRectangle.qml"));

       m_pButton = new QPushButton(this);
       m_pButton->setText("Qt Widgets...");

       QVBoxLayout *pLayout = new QVBoxLayout();
       pLayout->addWidget(pWidget);
       pLayout->addWidget(m_pButton);
       pLayout->setSpacing(10);
       pLayout->setContentsMargins(10, 10, 10, 10);
       setLayout(pLayout);

       // QML 与 Qt Widgets 通信
       // QObject *pRoot = (QObject*)pView->rootObject();
       QObject *pRoot = (QObject*)pWidget->rootObject();
       if (pRoot != NULL) {
           connect(pRoot, SIGNAL(qmlSignal()), this, SLOT(receiveFromQml()));
           connect(m_pButton, SIGNAL(clicked(bool)), pRoot, SIGNAL(cSignal()));
       }

}

void EpWidgetWithQuick::receiveFromQml()
{
    m_pButton->setText("Call the C++ slot");
}
